MoveAxisAbsolute
下達一個目標為特定絕對位置之運動指令。
語法
KsCommandStatus MoveAxisAbsolute(
int Index,
double Position,
double Velocity,
double Acceleration,
double Deceleration,
double Jerk,
McDirection Direction,
McBufferMode BufferMode
);
參數
Index [in]:軸索引。索引以零為起點;別名將影響此參數。
Position [in]:運動的目標位置,[單位] (正或負值)。
Velocity [in]:最大速度值,若靠近目標位置則不一定會到達最大速度,[單位/秒]。
Acceleration [in]:加速度值,永遠為正值,單位由 McProfileType 類型決定,(馬達的增加電源) [單位/秒2] 或 [秒]。
Deceleration [in]:減速度值,永遠為正值,單位由 McProfileType 類型決定,(馬達的減少電源) [單位/秒2] 或 [秒]。
Jerk [in]:加加速度值,永遠為正值,單位由 McProfileType 類型決定,為 [單位/秒3] 或 [秒]。
Direction [in]:軸移動的方向,請見 McDirection 類型。
BufferMode [in]:定義如何融合兩功能的速度,請見 McBufferMode 類型。
回傳值
返回 KsCommandStatus 結構。
備註
- 若此命令中斷,將放棄未行駛的距離。
- 若無其他擱置的動作,則此動作以零速度完成。
- 若只有一種數學解決方案可以到達指定位置(如在線性系統中),則輸入方向的值將被忽略。
- 對於模數軸,有效的絕對位置值在 [0, 360) 或相應範圍內,然而,應用程式可能會將 MoveAxisAbsolute 的“命令位置”移動到相應的模數範圍內。
- 列舉類型
mcShortestWay
著重於透過最短路徑的軌跡,走的方向取決於發送命令的當前位置。 - 更多關於融合模式的運作方式之資訊請見: 概念解說 > 融合運動。
- 當模數軸啟用時,模數值會套用至 Position 參數,軸將依據所設的 Direction 移動。
例如,若模數值為 360,當 Direction 設定為:- mcShortestWay / mcCurrentDirection:軸會採用最短距離到達目標。若距離相同,軸將以正方向移動至目標。例如,若目前位置為 0,目標位置為 340,軸將移動 -20 到達目標位置,最終位置將為 340。
- mcPositiveDirection:軸以正方向移動至目標。例如,若目前位置為 0,目標位置為 -20,軸將移動 340 到達目標位置。
- mcNegativeDirection:軸以負方向移動至目標。例如,若目前位置為 0,目標位置為 20,軸將移動 -340 到達目標位置,最終位置將為 20。
範例
VOID MoveAbsolute(INT Index, DOUBLE Target) {
//The direction is reserved for cyclic axes so it is currently ignored.
//Start an absolute move.
KsCommandStatus status = WaitForCommand(30, TRUE, MoveAxisAbsolute(Index, Target,
3600, 36000, 36000, 3600000, mcPositiveDirection, mcAborting));
//Print the final position.
double setPosition = 0;
KsError nRet = GetAxisPosition(Index, mcSetValue, &setPosition);
double actPosition = 0;
nRet = GetAxisPosition(Index, mcSetValue, &actPosition);
RtPrintf("Current Position: Target %d, Actual %d\n", (int)setPosition, (int)actPosition);
}
使用需求
RT | Win32 | |
---|---|---|
最低支援版本 | 4.0 | 4.0 |
標頭檔 | ksmotion.h | ksmotion.h |
程式庫 | KsApi_Rtss.lib | KsApi.lib |
參見